/*
 * @Author: jerry.yjf 273950111@qq.com
 * @Date: 2025-10-21 13:09:33
 * @LastEditors: jerry.yjf 273950111@qq.com
 * @LastEditTime: 2025-10-22 14:05:37
 * @FilePath: \a1021\src\utils\http.js
 * @Description: 
 * 
 * Copyright (c) 2025 by ${git_name_email}, All Rights Reserved. 
 */
import axios from "axios";

// baseURL的理解？ 就是请求的时候如果不加上域名则直接回拼接这个数据

// http.get('/abc')
// http://127.0.0.1:7001/abc

const instance = axios.create({
    // baseURL: 'http://127.0.0.1:7001',
    timeout: 10000,
    // headers: { 'X-Custom-Header': 'foobar' }
});

// 添加请求拦截器
instance.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    const token = localStorage.getItem('token')
    config.headers.Authorization = token;

    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
instance.interceptors.response.use(function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    if(response.data.code === 0) {
        alert('Token已过期，请重新登录')
        window.location.href = '/login'
    }
    return response;
}, function (error) { // 这个函数会执行，只有请求时红的时候
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    // error.response.code
    if(error.status == 404) {
        alert('请求不存在404')
    }
    else if(error.status == 500) {
        alert('服务器错误500')
    }
    else if(error.status == 401) {
        alert('请登录')
    }
    else {
        alert('未知错误')
    }

    return Promise.reject(error);
});

export default instance;